#pragma once
#include "DVector3.h"

namespace Skill
{
	namespace Ode
	{
		void DVector3::CollectManagedMemory()
		{
		}

		dReal DVector3::default::get(int index)
		{
			return _This[index];
		}
		void DVector3::default::set(int index , dReal value)
		{
			_This[index] = value;
		}

		VALUE_PROP_DEFINITION_GETSET(DVector3,_This[0],dReal,X);
		VALUE_PROP_DEFINITION_GETSET(DVector3,_This[1],dReal,Y);
		VALUE_PROP_DEFINITION_GETSET(DVector3,_This[2],dReal,Z);

		void DVector3::SetZero()
		{
			dSetZero(_This,4);
		}
		void DVector3::SetValue(dReal value)
		{
			dSetValue(_This,4,value);
		}

		dReal DVector3::Dot(DVector3^ a,DVector3^ b)
		{
			return dDot(a->_This,b->_This,3);
		}

		void DVector3::Scale(DVector3^ d)
		{
			dVectorScale(_This,d->_This,3);
		}
	}
}